﻿using PEPe.BusinessObject;
using PEPe.DataAccessModel;
using PEPe.Areas.Logado.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace PEPe.Areas.Logado.Controllers
{
    public class ProcedimentoController : AutenticationControllercs
    {
        // GET: Logado/Procedimento
        public ActionResult Index()
        {
            return View();
        }


        public ActionResult ConsultaProcedimento(jQueryDataTableParamModel param)
        {

            //Monta palavra chave
            string palavraChave = (param.sSearch != null) ? param.sSearch.ToString() : string.Empty;

            //Cria Instancia da BO de Procedimento
            ProcedimentoBO ProcedimentoBO = new ProcedimentoBO();

            //Retorna total de registros para monstar a paginação
            int totalReg = ProcedimentoBO.TotalRegistros(palavraChave);

            //Corrige calculo paginação
            int skip = param.iDisplayStart;
            int take = param.iDisplayLength;


            //Consulta dados no banco
            var result = ProcedimentoBO.ListarProcedimentoPaginado(palavraChave, skip, take);


            //Formata saida dos dados para funcionar no DataGrid obrigatório colocar todos parametros que vão aparecer lá
            List<string[]> listaDados = new List<string[]>();
            foreach (var item in result)
            {
                listaDados.Add(new string[] { item.Id.ToString(),                                              
                                              item.Descricao,
                                              item.Id.ToString(),                                              
                                              item.Id.ToString()

                });
            }

            //Monta Json de Retorno
            JsonResult retorno = Json(new
            {
                sEcho = param.sEcho,
                iTotalRecords = totalReg,
                iTotalDisplayRecords = totalReg,
                aaData = listaDados
            },
            JsonRequestBehavior.AllowGet);

            return retorno;


        }


        public ActionResult ProcedimentoDetalhe(int? id)
        {
           ProcedimentoBO ProcedimentoBO = new ProcedimentoBO();
           Procedimento retorno = new Procedimento();

            if(id != null)
               retorno = ProcedimentoBO.ConsultaProcedimento(Convert.ToInt32(id));
          

            return View("ProcedimentoDetalhe", retorno);
        }

        [HttpPost]
        public ActionResult ProcedimentoSalvar(Procedimento Procedimento)
        {

            ProcedimentoBO ProcedimentoBO = new ProcedimentoBO();
            ProcedimentoBO.Salvar(Procedimento);
                        
            return View("Index");
        }


        public ActionResult ProcedimentoExcluir(int? id)
        {
            ProcedimentoBO ProcedimentoBO = new ProcedimentoBO();
            Procedimento retorno = new Procedimento();

            if (id != null)
                ProcedimentoBO.Excluir(Convert.ToInt32(id));

            return View("Index");
        }
    }
}